#include "protocol.h"


//WR: E3 01(W) 00 00(CMD) 02(LEN) 00 00(DATA) 	//+ 0D 0A
//RD: E3 00(R) 00 00(CMD)             			//+ 0D 0A


u8 PRO_FLAG=0;
u8 PRO_WR=0;
u16 PRO_CMD=0;

u8 PRO_BUFF[32];

void Protocol_Process(u8 *data,u16 len)
{
	u8  LEN=0;
	
	if(data[0] != PRO_HEAD) return;
	
	PRO_WR = data[1];
	//WRITE
	if(PRO_WR == PRO_WRITE)
	{
		LEN = data[4];
		if(LEN == len - 5)
		{
//			CMD = data[2]<<8|data[1];
//			
//			switch(CMD)
//			{
//				
//			}
			
		}
	}
	//READ
	else if(PRO_WR == PRO_READ)
	{
		PRO_CMD = data[2]<<8|data[1];
		
		PRO_FLAG = 1;
		
	
	}
	else 
	{
		return;
	}
}


//RE: E3 01()  00 00(CMD) 01(LEN) 01   (OK)   + 0D 0A	
//RE: E3 00()  00 00(CMD) 02(LEN) 00 00(DATA) + 0D 0A	

void Protocol_Return(u8 *data,u8 len)
{
	u8 buff[16];
	u8 i;
	
	buff[0] = PRO_HEAD;
	buff[1] = PRO_WR;
	buff[2] = PRO_CMD>>8;
	buff[3] = PRO_CMD;	
	buff[4] = len;		
	for(i=0;i<len;i++)
	{
		buff[5+i] = *(data+i);	
	}
	buff[5+len] = 0x0D;	
	buff[6+len] = 0x0A;	
	
	for(i=0;i<len+7;i++)
	{
		USB_USART_SendData(buff[i]);//以字节方式,发送给USB 
	}
}


void Protocol_CMD_SI7021(void)
{
	u8 e;
	u8 buff[4];
	u16 temp=0,hum=0;
	
	e = SI7021_Read_Byte(&temp,&hum);

	if(e==0)
	{
		buff[0] = temp>>8;
		buff[1] = temp;
		buff[2] = hum>>8;
		buff[3] = hum;	
		Protocol_Return(buff,4);
	}
	else
	{
		buff[0] = e;
		Protocol_Return(buff,1);
	}		
	
}

